草庐IT

c++ - Cython、C++ 和 gsl

全部标签

Python 字典与 C++ 标准 :unordered_map (cython) vs cythonized python dict

我试图测量python字典、cythonizedpython字典和cythonizedcppstd::unordered_map之间的性能,只做一个初始化过程。如果编译cythonizedcpp代码我认为它应该比纯python版本更快。我使用4种不同的场景/符号选项进行了测试:使用std::unordered_map和Cythonbooknotation的CythonCPP代码(定义一对并使用插入方法)使用std::unordered_map和python符号(map[key]=value)的CythonCPP代码使用python字典(map[key]=value)的Cython代码(

python - 如何使用 Cython 公开将 C++ 对象返回给 Python 的函数?

我正在使用Cython构建C++Python绑定(bind),但我找不到如何从Python方法返回C++对象。更具体地说,在编译peak_detection_.pyx时,如下所示,我得到peak_detection_.pyx:35:36:Cannotconvert'vector[Peak]'toPythonobject最后几行defgetPeaks(self,data):returnself.thisptr.getPeaks(data)我理解这个错误,但我不介意一些关于如何修复它的帮助/指示。peak_detection.hpp#ifndefPEAKDETECTION_H#define

c++ - 如何使用gsl在C++上实现左矩阵除法

我正在尝试将MATLAB程序移植到C++。我想在矩阵A和列vectorB之间实现左矩阵除法。A是一个m-by-n矩阵,其中m不等于n并且B是一个包含m个分量的列vector。我希望结果X=A\B是欠定或超定方程组AX=B的最小二乘解。换句话说,X最小化norm(A*X-B),即vectorAX-B的长度。这意味着我希望它与MATLAB中的A\B具有相同的结果。我想在GSL-GNU(GNU科学图书馆)中实现这个功能,但我不太了解数学、最小二乘拟合或矩阵运算,有人能告诉我如何在GSL中实现吗?或者,如果在GSL中实现它们太复杂,有人可以向我推荐一个提供上述矩阵运算的良好开源C/C++库吗?

c++ - Cython 和 C++ 类构造函数

当一个类的C++实例应提供给另一个包装的构造函数类如下所述?请查看PySession类的pyx文件上的注释,它将pythonPyConfigParams对象作为参数,然后需要从中提取值以构建C++ConfigParams目的。然后使用ConfigParams对象来提供构造函数session。最好有一个程序可以让我“注入(inject)”由PyConfigParams对象包装的ConfigParamsc++对象直接进入Session的构造函数,不用拆它首先构建一个新的C++对象来提供给构造函数。这当然有效。然而,这是一种实现该解决方案的笨重且残酷的方法,更不用说不可靠了。我知道PyCap

c++ - Cython - 共享 Cython 模块

我有cython模块base.pyx和derived.pyx。base.pyx及其导入定义base.pxd文件使用cimport在derived.pyx文件中定义和使用>。文件放置在here.在我的Python应用程序中使用从cython生成的共享对象时,模块被正确导入,但是在使用库时总是出现错误提示ImportError:Nomodulenamed'base'在Cpp应用程序中。我还在我的Cpp应用程序中添加了当前路径PyObject*path=PySys_GetObject("path");PyObject*result=PyObject_CallMethod(path,"appe

c++ - 我应该用 GSL 跨度替换 (void*, size) 吗?

假设我有intfoo(void*p,size_tsize_in_bytes);并假设制作foo没有意义键入。我想成为一名优秀的编码员并应用C++核心准则。具体来说,我想使用跨度而不是(*,len)对。嗯,span不会编译(不能添加到void*);和span或span等将暗示foo实际上需要字符,但它可能不需要。所以我应该使用span在这种情况下,或坚持使用void*? 最佳答案 这个问题没有统一的答案。对于一个函数来说,它需要一个span意味着它采用连续的值数组,没有任何形式的所有权转移。如果该描述不能合理地代表正在发生的事情,那么

android - fatal error : Adreno-GSL

有时,当我使用Eclipse运行我的应用程序时,我在启动时遇到此错误,应用程序意外关闭并在logcat中显示此错误:Tag:Adreno-GSLText::ioctl_kgsl_sharedmem_alloc:FATALERROR:(null)我认为这是一个内存问题,但我对此一无所知,有人知道为什么会出现此错误,我该如何解决? 最佳答案 您可以使用:adbshelldumpsysmeminfoyour.package.name.here检查您使用了多少内存。值得注意的是,您的GL行。奇怪的是,只有从Eclipse运行时才会发生这种情

c++ - 在 Cython 中包装 C++ 模板函数/方法

我正在尝试用Cython包装一些C++代码。我有一个使用模板方法的类,但它本身不是模板。classSomeClass{templateSomeClass(T&spam);};由于类不是模板而只是构造函数,所以我不能像这样在Cython中将类声明为模板。#wrong!cdefexternfrom"SomeClass.h":cppclassSomeClass[T]:SomeClass(T&spam)如何包装模板方法? 最佳答案 对于非构造函数模板方法,使用以下非模板类:classSomeClass{templatevoidother(T

c++ - 减少 GSL 库的文件大小

有没有办法减少编译后的GSL库的文件大小?我可以只编译一些子库吗? 最佳答案 我可以想到这些方法来解决这个问题-执行此操作的一种非常简单但非常有效的方法是使用动态链接。将代码静态链接到您的库或可执行文件会使它们变得更大。This讨论可能会给你一个更清晰的画面。GSL是作为动态库构建的,因此在大多数情况下,您自己的可执行文件中实际上只有很少的GSL对象文件。使用编译器优化-在编译(使用GCC)时使用-s和-Os标志剥离二进制文件或使用strip--strip-all 关于c++-减少GSL

c++ - 从 gsl_matrix 中删除列

我想删除gsl_matrix的一列(第i列),然后将其内容复制到另一个gsl_matrix。这是我的代码:#include#include#include#includeintremove_col(intK,intN,inti,//betweenrange1toNgsl_matrix*Sn,//Kx(N-1)gsl_matrix*Z){gsl_matrix_viewZ_view;gsl_matrix_viewSn_view;if(i==0){Z_view=gsl_matrix_submatrix(Z,0,1,K,N-1);gsl_matrix_memcpy(Sn,&Z_view.mat